1944
11216
나는 한동안 JSON을 엉망으로 만들고 텍스트로 밀어 내고 (내가 아는) 누구에게도 해를 끼치 지 않았지만 제대로 일을 시작하고 싶습니다.
JSON 콘텐츠 유형에 대한 많은 "표준"을 보았습니다.
응용 프로그램 / json
애플리케이션 / x-javascript
텍스트 / 자바 스크립트
text / x-javascript
텍스트 / x-json
그러나 어느 것이 옳거나 가장 좋습니까? 보안 및 브라우저 지원 문제가 서로 다르다고 생각합니다.
JSON이 REST API에서 반환되는 경우 어떤 MIME 유형입니까?라는 유사한 질문이 있다는 것을 알고 있지만 약간 더 구체적인 답변을 원합니다. 
1
2
다음
JSON 텍스트의 경우 :
응용 프로그램 / json
JSON 텍스트의 MIME 미디어 유형은 application / json입니다. 기본 인코딩은 UTF-8입니다. (출처 : RFC 4627).
콜백이있는 JSONP (실행 가능한 JavaScript)의 경우 :
애플리케이션 / 자바 스크립트
관련 댓글에 언급 된 블로그 게시물은 다음과 같습니다.
JSON에 text / html을 사용하면 안되는 이유
Internet Explorer에서 때때로 application / json에 문제가 있음
Mimetypes의 전체 목록과 사용 용도
아래 @gnrfan의 답변에서 IANA의 공식 MIME 유형 목록
|
IANA는 JSON 용 공식 MIME 유형을 application / json으로 등록했습니다.
왜 text / json이 아닌지 물었을 때 Crockford는 JSON이 실제로 JavaScript도 텍스트가 아니며 IANA가 text / *보다 application / *을 나눌 가능성이 더 높다고 말한 것 같습니다.
추가 리소스 :
미디어 유형
의견 요청 4627
bluesmoon : JSON에는 유형이 있습니다.
|
JSON의 경우 :
콘텐츠 유형 : application / json
JSON-P의 경우 :
콘텐츠 유형 : application / javascript
|
물론 JSON의 올바른 MIME 미디어 유형은 application / json이지만 애플리케이션에 어떤 유형의 데이터가 필요한지 파악해야합니다.
예를 들어 Ext GWT를 사용하고 서버 응답은 text / html로 이동해야하지만 JSON 데이터를 포함합니다.
클라이언트 측, Ext GWT 양식 리스너
uploadForm.getForm (). addListener (new FormListenerAdapter ()
{
@우세하다
public void onActionFailed (Form form, int httpStatus, String responseText)
{
MessageBox.alert ( "오류");
}
@우세하다
public void onActionComplete (Form form, int httpStatus, String responseText)
{
MessageBox.alert ( "성공");
}
});
응용 프로그램 / json 응답 유형을 사용하는 경우 브라우저에서 파일을 저장할 것을 제안합니다.
Spring MVC를 사용하는 서버 측 소스 코드 스 니펫
새로운 AbstractUrlBasedView () 반환
{
@SuppressWarnings ( "선택 취소")
@우세하다
보호 된 void renderMergedOutputModel (Map model, HttpServletRequest request,
HttpServletResponse 응답) 예외 발생
{
response.setContentType ( "text / html");
response.getWriter (). write (json);
}
};
|
JSON :
응답은 URL에 전달 된 쿼리 매개 변수에 따라 동적으로 생성 된 데이터입니다.
예:
{ "이름": "Foo", "Id": 1234, "순위": 7}
콘텐츠 유형 : application / json
JSON-P :
패딩이있는 JSON.
응답은 JSON 데이터이며, 함수 호출이 래핑됩니다.
예:
functionCall ({ "Name": "Foo", "Id": 1234, "Rank": 7});
콘텐츠 유형 : application / javascript
|
Ubuntu 또는 Debian을 사용 중이고 Apache를 통해 .json 파일을 제공하는 경우 올바른 콘텐츠 유형으로 파일을 제공 할 수 있습니다. Firefox 확장 JSONView를 사용하고 싶기 때문에 주로이 작업을 수행하고 있습니다.
Apache 모듈 mod_mime는이를 쉽게 수행하는 데 도움이됩니다. 그러나 Ubuntu에서는 /etc/mime.types 파일을 편집하고 다음 줄을 추가해야합니다.
응용 프로그램 / json json
그런 다음 Apache를 다시 시작합니다.
sudo 서비스 apache2 다시 시작
|
클라이언트 측에서 ASP.NET 웹 서비스를 호출하는 경우 작동하려면 application / json을 사용해야합니다. 저는 이것이 jQuery와 Ext 프레임 워크에서 동일하다고 생각합니다.
|
JSON에 적합한 콘텐츠 유형은 application / json입니다.
|
application / json이 JSON 응답에 가장 적합한 MIME 유형이라는 것은 의심의 여지가 없습니다.
그러나 일부 압축 문제로 인해 application / x-javascript를 사용해야하는 경험이 있습니다. 내 호스팅 환경은 GoDaddy와 공유 호스팅입니다. 서버 구성을 변경할 수 없습니다. 응답을 압축하기 위해 web.config 파일에 다음 코드를 추가했습니다.








<정적 유형>







이를 사용하여 .aspx 페이지는 g-zip으로 압축되었지만 JSON 응답은 압축되지 않았습니다. 나는 추가했다

정적 및 동적 유형 섹션에서. 그러나 이것은 JSON 응답을 전혀 압축하지 않습니다.
그 후 새로 추가 된 유형을 제거하고

정적 및 동적 유형 섹션 모두에서 응답 유형을 변경했습니다.
.ashx (비동기 처리기)
애플리케이션 / x-javascript
이제 JSON 응답이 g-zip으로 압축되었음을 알았습니다. 그래서 개인적으로
애플리케이션 / x-javascript
공유 호스팅 환경에서 JSON 응답을 압축하려는 경우에만. 공유 호스팅에서는 IIS를 변경할 수 없습니다.구성.
|
MIME 유형으로 application / json을 사용하는 경우에만 다음이 있습니다 (2011 년 11 월 현재 Chrome 최신 버전, Firefox with Firebug).
서버에서 JSON이로드 될 때 Chrome에서 더 이상 경고가 표시되지 않습니다.
Firebug는 응답에 JSON 데이터를 보여주는 탭을 추가합니다.
포맷. MIME 유형이 다른 경우 다음과 같이 표시됩니다.
'응답 내용'.
|
콘텐츠 유형 application / json에서 모든 것이 작동하는 것은 아닙니다.
Ext JS 양식 제출을 사용하여 파일을 업로드하는 경우 브라우저에서 서버 응답을 파싱하여